/**
 * Created by Administrator on 2018/11/25 0025.
 */
const express = require("express");
const router = express.Router();
const utils = require('../../public/utils');
const bookUtils = require('./book-common');

/*
* 添加书
* 参数@params:
*   sortIdArray: ['一级分类id','二级分类id'],
*   bookData: {
*       bookName: 书名,
*       description: 简介,
*       bookIcon: 书图标,
*       author: 作者,
*       publish: 出版,
*       costPrice: 原价,
*       price: 销售价,
*
*   }
* */
router.post('/addBook',(req,res) => {
    utils.tokenValid(req,res,async() => {
        const sortId = req.body.sortIdArray;
        const bookData = req.body.bookData;
        const firstSortId = await bookUtils.sortIsExistence({_id: sortId[0]});
        const secondSortId = await bookUtils.sortIsExistence({_id: sortId[1]});
        if(firstSortId && firstSortId !== 9999 && secondSortId && secondSortId !== 9999) {
            const saveBook = await bookUtils.addBook({...bookData,firstSortId:sortId[0],secondSortId:sortId[1]});
            if(saveBook) {
                res.send(utils.setJsonStyle('0', 'success'));
            }else {
                res.send(utils.setJsonStyle('9999', '添加失败'));
            }
        }else {
            res.send(utils.setJsonStyle('9999', '添加失败'));
        }
    })

});

/*
* 根据分类id(分页)获取图书列表
* @params:
*   firstSortId   1级分类主键  （非必需）
*   secondSortId   2级分类主键   （非必需）
*   pageNum  分页，当前页数  （非必需）
 *  pageSize  分页，展示数据条数 （非必需）
* */
router.post('/findBook',(req,res) => {
    utils.tokenValid(req,res,async() => {
        const firstSortId = req.body.firstSortId;
        const secondSortId = req.body.secondSortId;
        const pageSize = req.body.pageSize;
        const pageNum = req.body.pageNum && req.body.pageNum-- <= 0 ? 0 : req.body.pageNum--;
        const findObj = {
            bookName: {$regex: req.body.bookName || ''}
        }; //查询条件
        firstSortId && (findObj.firstSortId = firstSortId);
        secondSortId && (findObj.secondSortId = secondSortId);
        const handleObj = {};
        pageSize && (handleObj.limit = Number(pageSize));
        pageNum && (handleObj.skip = pageSize * pageNum);
        const docs = await bookUtils.findBook(findObj,{},handleObj);
        if(docs !== 9999) {
            const total = await bookUtils.bookListCount();
            res.send(utils.setJsonStyle('0', 'success',{total,list: docs}));
        }else {
            res.send(utils.setJsonStyle('9999', '查找失败'));
        }
    })

});

/*
* 根据id编辑图书
* @params:
*   id: 图书主键 （必须）
*   sortIdArray:['一级分类id','二级分类id']
*   bookData: {
*       bookName: 书名,
 *      description: 简介,
 *      bookIcon: 书图标,
 *      author: 作者,
 *      publish: 出版,
 *      costPrice: 原价,
 *      price: 销售价,
*   }
* */
router.post('/editBookById',(req,res) => {
    utils.tokenValid(req,res,async() => {
        const _id = req.body.id;
        const sortId = req.body.sortIdArray;
        const bookData = req.body.bookData;
        let upObj = {
            ...bookData
        }
        if(sortId[0] && sortId[1]) {
            upObj.firstSortId = sortId[0];
            upObj.secondSortId = sortId[1];
        }
        const isUpdate = await bookUtils.updateBook(_id,upObj);
        if(isUpdate) {
            res.send(utils.setJsonStyle('0', 'success'));
        }else {
            res.send(utils.setJsonStyle('9999', '编辑失败'));
        }
    })
});

/*
* 根据id删除图书
*
* */
router.post('/deleteBookById',async (req,res) => {
    utils.tokenValid(req,res,async() => {
        const _id = req.body.id;
        const isDelete = await bookUtils.deleteBook({_id});
        if(isDelete) {
            res.send(utils.setJsonStyle('0', 'success'));
        }else {
            res.send(utils.setJsonStyle('9999', '删除失败'));
        }
    })
});


/*
* 获取新书列表（可分页）
 * @params:
 *   pageNum  分页，当前页数  （非必需）
 *   pageSize  分页，展示数据条数 （非必需）
* */
router.post('/getNewBook',async (req,res) => {
    utils.tokenValid(req,res,async() => {
        const pageSize = req.body.pageSize;
        const pageNum = req.body.pageNum && req.body.pageNum-- <= 0 ? 0 : req.body.pageNum--;
        const handleObj = {
            sort: {createTime: -1}
        };
        pageSize && (handleObj.limit = Number(pageSize));
        pageNum && (handleObj.skip = pageSize * pageNum);
        const docs = await bookUtils.findBook({},{},handleObj);
        if(docs !== 9999) {
            const total = await bookUtils.bookListCount();
            res.send(utils.setJsonStyle('0', 'success',{total,list: docs}));
        }else {
            res.send(utils.setJsonStyle('9999', '查找失败'));
        }
    })
})

module.exports = router;
